iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Software Development

數位醫療與雲原生第一次的親密接觸系列 第 15

Day 15 [數位醫療] Dockerize multi-frame dicom轉換服務

  • 分享至 

  • xImage
  •  

前面有提到在進行將multi-frame dicom裡的圖片取出來時,需要在openjdk內加入opencv函式庫,如果是windows開發環境需要加入opencv.dll,linux環境則是需要加入libopencv_java.so。

因此如果想將服務打包成docker,不能像前一篇一樣使用一般的openjdk,需要用含有opencv函式庫的openjdk。

之前開發時有在Docker hub上搜尋有沒有善心人士提供類似的openjdk,找了一圈都沒找到,只好自己來寫了。

容器化multi-frame dicom轉換服務需要遵循以下步驟:

  1. 建立含有opencv函式庫的openjdk image

需要先新增一個Dockerfile檔案,並在同個目錄下放入libopencv_java.so(可從Dcm4chee的Github上下載)

https://ithelp.ithome.com.tw/upload/images/20240923/20161987COKnx1Lnnx.png

含有opencv函式庫的openjdk Dockerfile

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y ant
RUN apt-get install -y openjdk-11-jdk
ARG JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
RUN echo $JAVA_HOME
RUN java -version
ADD ./libopencv_java.so /usr/lib/libopencv_java.so

修改Dockerfile後執行docker build指令

docker build -t openjdkwithopencv .
  1. 修改Springboot服務的Dockerfile

將原本使用的openjdk抽換成openjdkwithopencv(含有opencv函式庫的openjdk)

FROM openjdkwithopencv
COPY ./target/*.jar /Documents/docker/demo.jar
WORKDIR /Documents/docker
RUN sh -c 'touch demo.jar'
ENTRYPOINT ["java","-jar","demo.jar"]

再執行docker build指令即可將服務打包成image

docker build -t dicomparsetest .

docker執行服務

docker run -p ${host port}:${container port} image_name

執行後就能使用容器化的multi-frame dicom轉換服務了!也可以直接將libopencv_java.so加到Springboot服務的image裡,只需要改寫Dockerfile即可。


上一篇
Day 14 [數位醫療] 容器魔術師 --萬物皆可dockerize
下一篇
Day 16 [雲原生( Cloud Native ) ] docker X docker-compose X Kubernetes
系列文
數位醫療與雲原生第一次的親密接觸30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言